package com.jh.netty.instruction;

public enum DataPacketCMD {
    /**
     * 接收正常
     * 0x81
     * 当通信包正确且主机对某台控制器下载数据时，控制器回应的通信包中，数据包只包含一个命
     * 令码字节，可能的结果（81 82 83 84）
     */
    CMD_OK("81"),

    /**
     * 请求重发
     * 0x82
     */
    CMD_Request_Resend("82"),

    /**
     * 无效命令码
     * 0x83
     */
    CMD_INVALID_CMD_CODE("83"),

    /**
     * 无效数据
     * 0x84
     */
    CMD_INVALID_DATA("84"),

    /**
     * 数据已全部上载
     * 0x85
     * 当通信包正确且主机请求从某台控制器上载数据时，控制器回应的通信包中，数据包由命令码
     * 和若干数据组成，可能的结果如下（命令码 + 若干上载数据 正常回应）
     */
    CMD_DATA_ALL_UPLOAD("85"),

    //================================ 发送指令 ================================

    /**
     * 取控制器识别码 / 取控制器名称和版本号
     * 0x01
     */
    CMD_GET_DCUID("01"),

    /**
     * 取控制器门参数表
     * 0x06
     */
    CMD_GET_DOOR_CONFIG("06"),

    /**
     * 取控制器时间
     * 0x07
     */
    CMD_GET_TIME("07"),

    /**
     * 取控制器历史事件
     * 0x11
     *
     * @see com.jh.netty.instruction.datapacket.ControllerHistoryResponseData
     */
    CMD_GET_EVENT("11"),

    /**
     * 取控制器所有点状态表
     * 0x40
     */
    CMD_GET_DOT_STATUS("40"),

    /**
     * 下载控制器门参数表
     * 0x26
     */
    CMD_SET_DOOR_CONFIG("26"),

    /**
     * 下载系统时间
     * 0x27
     */
    CMD_SET_TIME("27"),

    /**
     * 下载设置控制器点状态表
     * 0x62
     */
    CMD_SET_DOT_STATUS("62");

    private final String cmd;

    DataPacketCMD(String cmd) {
        this.cmd = cmd;
    }

    public String getCmd() {
        return cmd;
    }

    public static DataPacketCMD cmd(String cmd) {
        DataPacketCMD[] arr = DataPacketCMD.values();
        for (DataPacketCMD dpc : arr) {
            if (dpc.cmd.equals(cmd)) {
                return dpc;
            }
        }
        return null;
    }
}
